package com.example.lib5.company_interface.group;

import java.util.ArrayList;
import java.util.UUID;

/**
 * 创建日期：2022/6/10 0010 2:52
 *
 * @author tony.sun
 * 类说明：
 */
public class GroupDemo {
    public static void main(String[] args) {
        /*// 26个字母a~z
        char[] letter = new char[4];
        for (int i = 0; i < letter.length; i++) {
            letter[i] = (char) ('a' + i);
        }
        // 可以组成的字母组合的个数 2^26 -1
        int count = (int) Math.pow(2, letter.length) - 1;
        // System.out.println(count);

        // 验证字母组合，可以不要，把这些字母组合用集合存储起来
        // HashSet<String> arrays = new HashSet<String>();

        // 每一次变化都可以组成一个新的字母组合，可以直接输出
        for (int i = 1; i <= count; i++) {
            int index = 0;
            // StringBuffer sb = new StringBuffer();
            for (int j = i; j > 0; j /= 2) {
                if (j % 2 == 1) {
                    // sb.append(letter[index]);
                    System.out.print(letter[index]);
                }
                index++;
            }
            System.out.println();
        }*/
//        extracted('a');
        char[] chs = {
                'a','b','c',
//                'd','e','f','g','h'
        };

        comb(chs);

    }
    public static void comb(char[] chs) {

        int len = chs.length;

        int nbits = 1 << len;

        for (int i = 0; i < nbits; i++) {

            int t;

            for (int j = 0; j < len; j++) {

                t = 1 << j;

                if ((t & i) != 0) { // 与运算，同为1时才会是1

                    System.out.print(chs[j]);

                }

            }

            System.out.println();

        }

    }

    public static StringBuilder sb=new StringBuilder();
    private static void extracted(char a) {
        ArrayList<String> list = new ArrayList<String>();
        for (char i = a; i <= 'c'; i++) {
//            System.out.println(i);
            //清空
            sb.delete(0,sb.length());
            for (char j = i; j <= 'c'; j++) {
                //拼接
                sb.append(j);
                //存储
                list.add(sb.toString());
            }
        }
        //遍历出来所有的组合
        for (String string : list) {
            System.out.println(string);
        }
    }
}
